function [alpha, beta, gamma] = util_get_eul_angle_from_T(T)
    % util_get_eul_angle_from_T: 从齐次变换矩阵 T 中提取 ZYX 欧拉角（Tait-Bryan 角）。
    % 输入参数：
    %   T: 齐次变换矩阵（4x4），包含旋转和平移信息。
    % 输出参数：
    %   alpha: 绕 X 轴的第一个旋转角度（单位：度）。
    %   beta: 绕 Y 轴的第二个旋转角度（单位：度）。
    %   gamma: 绕 Z 轴的第三个旋转角度（单位：度）。

    % 判断特殊情况：T(1,3) == 0 且 T(2,3) == 0，表示绕 Y 轴的旋转达到 ±90 度（奇异点）
    if T(1,3) == 0 && T(2,3) == 0 && T(3,3) > 0
        % 当 T(3,3) > 0 时，beta 为 0 度（正向对齐）
        beta = 0; % beta = 0
        alpha = 0; % alpha 可以任意选择，这里设为 0
        gamma = atan2(-T(1,2), T(1,1)) * 180 / pi; % 计算 gamma 的值
    elseif T(1,3) == 0 && T(2,3) == 0 && T(3,3) < 0
        % 当 T(3,3) < 0 时，beta 为 180 度（反向对齐）
        beta = 180; % beta = π
        alpha = 0; % alpha 可以任意选择，这里设为 0
        gamma = atan2(T(1,2), -T(1,1)) * 180 / pi; % 计算 gamma 的值
    else
        % 一般情况下的计算
        % beta 是绕 Y 轴的旋转角度，通过 sqrt(T(3,1)^2 + T(3,2)^2) 和 T(3,3) 计算
        beta = atan2(sqrt((T(3,1)^2) + (T(3,2)^2)), T(3,3)) * 180 / pi;

        % alpha 是绕 X 轴的旋转角度，通过 T(2,3) 和 T(1,3) 计算
        alpha = atan2(T(2,3), T(1,3)) * 180 / pi;

        % gamma 是绕 Z 轴的旋转角度，通过 T(3,2) 和 -T(3,1) 计算
        gamma = atan2(T(3,2), -T(3,1)) * 180 / pi;
    end

    % 可选验证：使用 tr2eul 函数（如果可用）来验证计算结果
    % tr2eul 将返回弧度制的欧拉角，因此需要转换为角度
    eul = tr2eul(T) * 180 / pi;
end